
/*不定参宏函数的使用*/

#include<stdio.h>
#include<stdarg.h>
#include<stdlib.h>
#define LOG(fmt,...)printf("[%s:%d]"fmt,__FILE__,__LINE__,##__VA_ARGS__);

#define _GNU_SOURCE 

/*不定参函数的使用，不定参数据的访问*/
void printNum(int count,...){
    va_list ap;//获取指定参数的起始地址，这里是获取count参数之后的第一个参数的起始地址
    va_start(ap,count);
    for(int i=0;i<count;++i)
    {
            int num=va_arg(ap,int);
            printf("param[%d]:%d\n",i,num);
    }
    va_end(ap);//将ap指针置空

}

void myprintf(const char *fmt,...)
{
    va_list ap;
    va_start(ap,fmt);
    char *res;
    int ret=vasprintf(&res,fmt,ap);
    if(ret!=-1)
    {
        printf(res);
        free(res);
    }
    va_end(ap);//将ap指针置空
}

int main()
{
    LOG("就业");
    printNum(2,666,777);
    printNum(5,1,2,3,4,5);
    myprintf("%s-%d\n","比特就业课",666);
    myprintf("就业");
    return 0;
}
